Der Arbeitsbereich OpenSCAD soll Interoperabilität mit der Open-Source-Software OpenSCAD bieten. Dieses Programm wird nicht als Bestandteil von FreeCAD verteilt, sollte aber installiert werden, um diesen Arbeitsbereich voll nutzen zu können. OpenSCAD sollte nicht mit OpenCASCADE verwechselt werden, welches der geometrische Kernel ist, den FreeCAD zur Erstellung von Geometrie auf dem Bildschirm verwendet. Die OpenCASCADE-Bibliotheken werden immer benötigt, um FreeCAD zu verwenden, während die ausführbare OpenSCAD-Datei vollkommen optional ist.
Er enthält einen CSG-Importer zum Öffnen der CSG-Dateien aus OpenSCAD und einen Exporter zur Ausgabe eines CSG-basierten Baums. Geometrie, die nicht auf CSG-Operationen basiert, wird als Netz exportiert.
Dieser Arbeitsbereich enthält Funktionen, um den CSG-Funktionssbaum zu ändern und Modelle zu reparieren. Er enthält außerdem allgemein nutzbare Werkzeuge, die keine OpenSCAD-Installation erfordern; sie können in Verbindung mit anderen Arbeitsbereichen verwendet werden. Beispielsweise verwendet der Arbeitsbereich Netz intern die OpenSCAD-Funktionen, um Operationen mit Netzen durchzuführen, da diese recht robust sind.
In FreeCAD 0.19 wurde das Ply-Modul (Python-Lex-Yacc), das zum Importieren von CSG-Dateien verwendet wird, aus dem FreeCAD-Quellcode entfernt, da es sich um eine nicht von FreeCAD entwickelte Drittanbieter-Bibliothek handelt. Daraus folgt, dass der Anwender selbst Ply installieren muss, bevor der Arbeitsbereich OpenSCAD verwendet werden kann. Wird eine vorgefertigte, stabile Version von FreeCAD verwendet, sollte diese Abhängigkeit automatisch auf allen Plattformen installiert sein; in anderen Fällen, z.B. wenn man selbst aus dem Quellcode kompiliert, muss sie möglicherweise aus einem Online-Datenspeicher installiert werden.
Dies erfolgt unter openSUSE durch:
sudo zypper install python3-ply
Unter Debian/Ubuntu basierten Systemen wird folgendes verwendet:
sudo apt install python3-ply
Die allgemeine Installation auf allen Plattformen kann über den Python-Paketindex durchgeführt werden.
pip3 install --user ply
Die OpenSCAD-Sprache erlaubt die Verwendung von Variablen und Schleifen. Sie erlaubt das Anlegen von Teilmodulen, um Geometrie und Code wiederzuverwenden. Dieser hohe Grad an Flexibilität macht das Übersetzen (parsing) sehr kompliziert. Im Moment kann der Arbeitsbereich OpenSCAD in FreeCAD die OpenSCAD-Sprache nicht direkt (nativ) verarbeiten. Es kann stattdessen, wenn OpenSCAD installiert ist, dazu verwendet werden, die Eingabe in das Ausgabeformat CSG umzuwandeln, das ein Teilbereich der OpenSCAD-Sprache ist, und kann als Eingabe für OpenSCAD zur weiteren Bearbeitung eingesetzt werden. Während der Umwandlung geht jegliches parametrisches Verhalten verloren - alle Variablennamen werden gelöscht, Schleifen aufgelöst und mathematische Ausdrücke ausgerechnet.
OpenSCAD erstellt CSG (constructive solid geometry) genauso wie es Netzdateien importiert und 2D-Geometrie aus DXF-Dateien extrudiert. FreeCAD ermöglicht, CSG auch mit Grundkörpern zu erstellen. Der Geometriekern von FreeCAD (OCCT) arbeitet mit einer Umgrenzungsdarstellung (boundary representation, BREP). Deshalb ist die Umwandlung von CSG nach BREP theoretisch möglich, während die Umwandlung von BREP nach CSG im Allgemeinen nicht funktionieren dürfte.
OpenSCAD nutzt intern Netzobjekte. Manche Operationen, die bei Netzobjekten nützlich sind, sind bei BREP-Modellen nicht sinnvoll und können daher nicht vollständig unterstützt werden. Darunter sind konvexe Hüllen, Minkowski-Summen, glide und subdiv. Im Moment führen wir die OpenSCAD-Binärdatei aus, um Hüllen- und Minkowski-Operationen durchzuführen und die Ergebnisse zu importieren. Das bedeutet, das die beteiligte Geometrie trianguliert (temporär in Netz-Körper verwandelt) wird. In OpenSCAD wird oft nicht gleichförmiges Skalieren eingesetzt, das keinerlei Probleme im Einsatz mit Netzobjekten bereitet. In unserem Geometriekern werden geometrische Grundelemente (Linien, Kreissegmente) in B-Splines konvertiert, bevor man solche Formänderungen durchführt. Diese B-Splines sind bekannt dafür, dass sie später in booleschen Verknüpfungen Fehler verursachen. Eine automatisierte Lösung steht im Moment nicht zur Verfügung. Bitte solche Fehler im Forum posten, falls sie entdeckt werden. Oft können solche Probleme dadurch behoben werden, dass man kleine Teile neu aufbaut. Das Deformieren eines Zylinder kann durch Extrudieren einer Ellipse ersetzt werden.
Das Importieren von OpenSCAD-Code mit Texten erfordert, dass die verwendeten Schriftarten auf dem eigenen Rechner korrekt installiert sind. Dies kann durch öffnen von OpenSCAD als eigenständiges Werkzeug und aktivieren der Liste unter Help → Font List erfolgen. Die Liste zeigt auch die korrekten Schriftartnamen an. Erscheint eine Schriftart nach dem Installieren nicht in der Liste, muss die Schriftartdatei wahrscheinlich manuell in das passende Systemverzeichnis kopiert werden.
Das Importieren von Texten ist verhältnismäßig langsam. Im Hintergrund verwendet FreeCAD eine DXF-Datei, die von OpenSCAD erstellt wurde. Je mehr Konturen vorhanden sind, desto langsamer ist das Importieren.
It can be a good idea to first import a simple test case (replace NameOfFont
with the correct font name):
TESTFONT="NameOfFont"; linear_extrude(0.001) { text("A", size=5, font=TESTFONT, script="Latn"); };
The script="Latn"
parameter can be left out here, but is required if the text string does not contain any letters, but only punctuation and/or numbers.
Please note that use <FONT>;
statements in your source files are ignored when importing in FreeCAD. Under OpenSCAD the effect of a use
statement is that the provided font file is temporarily added to the list of known fonts (although even there the statement does not work when a script is modified interactively).
Wenn DXF importiert wird, sollte die "Draft Präzision" auf einen sinnvollen Wert eingestellt werden, um so die Erkennung von verbundenen Kanten zu erleichtern.
Wenn FreeCAD beim Importieren von CSG abstürzt, wird dringend empfohlen, "Modell automatisch nach Boolescher Verknüpfung überprüfen" im Menü Bearbeiten → Einstellungen → Part/Part Design → Allgemein → Modelleinstellungen zu aktivieren.